關閉模態對話框窗口後 ASP.NET 刷新父頁面 (ASP.NET Refresh Parent Page after Closing Modal Dialog Window)


問題描述

關閉模態對話框窗口後 ASP.NET 刷新父頁面 (ASP.NET Refresh Parent Page after Closing Modal Dialog Window)

I have an ASP.NET page that launches a modal dialog window:

Dim sURL As String = System.Configuration.ConfigurationManager.AppSettings("PAYORS_Path") & "PayorCopy.aspx"
    lnkCopy.Attributes.Add("onclick", "javascript:window.showModalDialog('" & sURL & "',null,'status:no;dialogWidth:375px;dialogHeight:550px;dialogHide:true;help:no;scroll:yes;center:yes');return false;")

The user can create new items in this modal window.  When the user clicks the Close button the modal dialog window is successfully closed, but the new items created do not appear on the parent page.  When the modal window is closed I would like the parent page to refresh to show the new items the user created.  Currently:

Private Sub btnClose_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnClose.Click
    Dim strjscript As String = "<script language='javascript'>self.close();</script>"
    LtClose.Text = strjscript
End Sub

I have tried adding to this script:

window.opener.location.reload(true);

But then when I test I get an error that says "Unable to get value of the property 'location': object is null or undefined."

Any help would be much appreciated!

‑‑‑‑‑

參考解法

方法 1:

That would be because there is no 'opener' :) Location is method of the window object so you can even treat it as global is most cases. Any of those should work:

window.location.reload(true);

or:

location.reload(true);

EDIT Yeah I just noticed where you put that script.. if it's in the click handle inside the modal..then 'window' there is really a different one ‑ it's modal after all! Try adding it directly after the code opening modal window ‑ the script execution will be blocked until the modal returns, so you can so something like this:

var shouldReloadPage = window.showModalDialog('" & sURL & "',null,'status:no;dialogWidth:375px;dialogHeight:550px;dialogHide:true;help:no;scroll:yes;center:yes');
if(shouldReloadPage){
window.location.reload(true);
}
return false;

This is still inside the click handler ofc, just showing in code block for easier reading.

方法 2:

Instead of using the old modal dialog window, try jQuery Dialog because it behaves just like a modal but keeps you in the same window. Therefore it's is easily refreshed with the following code:

location.reload(true);

For more information, check out this question here at SO.

Hope it helps.

(by MF LuderDamyan PetevAndroiderson)

參考文件

  1. ASP.NET Refresh Parent Page after Closing Modal Dialog Window (CC BY‑SA 3.0/4.0)

#ASP.NET #vb.net






相關問題

System.Reflection.Assembly.LoadFile 鎖定文件 (System.Reflection.Assembly.LoadFile Locks File)

如何在沒有全局變量的情況下一直保留我的變量? (How can I keep my variable all the time without global variables?)

C# / ASP.NET - Web 應用程序鎖定 (C# / ASP.NET - Web Application locking)

關閉模態對話框窗口後 ASP.NET 刷新父頁面 (ASP.NET Refresh Parent Page after Closing Modal Dialog Window)

無法將 NULL 值傳遞給數據庫 (Unable to pass NULL value to database)

wcf:將用戶名添加到消息頭是否安全? (wcf: adding username to the message header is this secure?)

使用 ASP.Net 教初學者 Web 開發的小項目想法 (Small projects ideas to teach beginners web development using ASP.Net)

SQL Server - 分組、擁有和計數 (SQL Server - Group by, having and count in a mix)

企業庫異常處理應用程序塊和日誌記錄應用程序塊在 ASP.NET 中的正確使用 (Enterprise Library Exception Handling Application Block and Logging Application Block proper use in ASP.NET)

來自proc的asp.net多個結果集:是否有必要將結果映射到類?如果是這樣,怎麼做? (asp.net multiple result set from proc: is it necessary to map results to class? If so, how?)

如何在測試工具中實例化 asp.net 代碼隱藏類? (How can I instantiate an asp.net codebehind class in a test harness?)

Web 窗體用戶控制事件,需要在頁面加載後添加 (Web Form User Control Event, needs to be added after page loads)







留言討論